/**
 * COMMON DHTML FUNCTIONS
 * These are handy functions I use all the time.
 *
 * By Seth Banks (webmaster at subimage dot com)
 * http://www.subimage.com/
 *
 * Up to date code can be found at http://www.subimage.com/dhtml/
 *
 * This code is free for you to use anywhere, just keep this comment block.
 */

/**
 * X-browser event handler attachment and detachment TH: Switched first true to
 * false per
 * http://www.onlinetools.org/articles/unobtrusivejavascript/chapter4.html
 * 
 * @argument obj - the object to attach event to
 * @argument evType - name of the event - DONT ADD "on", pass only "mouseover",
 *           etc
 * @argument fn - function to call
 */
function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, false);
		return true;
	} else if (obj.attachEvent) {
		var r = obj.attachEvent("on" + evType, fn);
		return r;
	} else {
		return false;
	}
}
function removeEvent(obj, evType, fn, useCapture) {
	if (obj.removeEventListener) {
		obj.removeEventListener(evType, fn, useCapture);
		return true;
	} else if (obj.detachEvent) {
		var r = obj.detachEvent("on" + evType, fn);
		return r;
	} else {
		alert("Handler could not be removed");
	}
}

/**
 * Code below taken from -
 * http://www.evolt.org/article/document_body_doctype_switching_and_more/17/30655/
 * 
 * Modified 4/22/04 to work with Opera/Moz (by webmaster at subimage dot com)
 * 
 * Gets the full width/height because it's different for most browsers.
 */
function getViewportHeight() {
	if (window.innerHeight != window.undefined)
		return window.innerHeight;
	if (document.compatMode == 'CSS1Compat')
		return document.documentElement.clientHeight;
	if (document.body)
		return document.body.clientHeight;
	return window.undefined;
}
function getViewportWidth() {
	if (window.innerWidth != window.undefined)
		return window.innerWidth;
	if (document.compatMode == 'CSS1Compat')
		return document.documentElement.clientWidth;
	if (document.body)
		return document.body.clientWidth;
	return window.undefined;
}

function mask_onkeypress(event, element, pattern) {
	var key, is_ctrl;

	if (window.event) {
		key = event.keyCode;
		is_ctrl = window.event.ctrlKey;
	} else if (event.which) {
		key = event.which;
		is_ctrl = event.ctrlKey;
	}

	if (isNaN(key) || (key == 8) || is_ctrl) {
		return true;
	}

	var keychar = String.fromCharCode(key);
	var value = element.value + keychar;

	return eval(pattern + '.test(value)');
}
